Micron Document
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------
| SparkN0de-git | SparkN0de |
--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------


Displaying Raw • Download


meshchatx/src/backend/database/debug_logs.py fda9187e95d8b9cc8373c1de23cefce6928c241d (fda9187e) Text, 2.97 KB

Tff7b72from T7ee787datetime Tff7b72import Te6edf3UTCTb4b4b4, Te6edf3datetime

Tff7b72from T7ee787.T7ee787provider Tff7b72import Te6edf3DatabaseProvider


Tff7b72class T56d364DebugLogsDAOTb4b4b4:
Tff7b72def Tff7b72__init__Tb4b4b4(Tff7b72selfTb4b4b4, Te6edf3providerTb4b4b4: Te6edf3DatabaseProviderTb4b4b4)Tb4b4b4:
Tff7b72selfTff7b72.Td2a8ffprovider Tff7b72= Te6edf3provider

Tff7b72def Td2a8ffinsert_logTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3levelTb4b4b4, Te6edf3moduleTb4b4b4, Te6edf3messageTb4b4b4, Te6edf3is_anomalyTff7b72=T79c0ff0Tb4b4b4, Te6edf3anomaly_typeTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Te6edf3sql Tff7b72= Ta5d6ff"""
Ta5d6ff INSERT INTO debug_logs (timestamp, level, module, message, is_anomaly, anomaly_type)
Ta5d6ff VALUES (?, ?, ?, ?, ?, ?)
Ta5d6ff Ta5d6ff"""
Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8ffexecuteTb4b4b4(
Te6edf3sqlTb4b4b4,
Tb4b4b4(
Te6edf3datetimeTff7b72.Td2a8ffnowTb4b4b4(Te6edf3UTCTb4b4b4)Tff7b72.Td2a8fftimestampTb4b4b4(Tb4b4b4)Tb4b4b4,
Te6edf3levelTb4b4b4,
Te6edf3moduleTb4b4b4,
Te6edf3messageTb4b4b4,
Te6edf3is_anomalyTb4b4b4,
Te6edf3anomaly_typeTb4b4b4,
Tb4b4b4)Tb4b4b4,
Tb4b4b4)

Tff7b72def Td2a8ffget_logsTb4b4b4(
Tff7b72selfTb4b4b4,
Te6edf3limitTff7b72=T79c0ff100Tb4b4b4,
Te6edf3offsetTff7b72=T79c0ff0Tb4b4b4,
Te6edf3searchTff7b72=Tff7b72NoneTb4b4b4,
Te6edf3levelTff7b72=Tff7b72NoneTb4b4b4,
Te6edf3moduleTff7b72=Tff7b72NoneTb4b4b4,
Te6edf3is_anomalyTff7b72=Tff7b72NoneTb4b4b4,
Tb4b4b4)Tb4b4b4:
Te6edf3sql Tff7b72= Ta5d6ff"Ta5d6ffSELECT * FROM debug_logs WHERE 1=1Ta5d6ff"
Te6edf3params Tff7b72= Tb4b4b4[Tb4b4b4]

Tff7b72if Te6edf3searchTb4b4b4:
Te6edf3sql Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff AND (message LIKE ? OR module LIKE ?)Ta5d6ff"
Te6edf3paramsTff7b72.Td2a8ffextendTb4b4b4(Tb4b4b4[Ta5d6fffTa5d6ff"Ta5d6ff%Tffd700{Te6edf3searchTffd700}Ta5d6ff%Ta5d6ff"Tb4b4b4, Ta5d6fffTa5d6ff"Ta5d6ff%Tffd700{Te6edf3searchTffd700}Ta5d6ff%Ta5d6ff"Tb4b4b4]Tb4b4b4)

Tff7b72if Te6edf3levelTb4b4b4:
Te6edf3sql Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff AND level = ?Ta5d6ff"
Te6edf3paramsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3levelTb4b4b4)

Tff7b72if Te6edf3moduleTb4b4b4:
Te6edf3sql Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff AND module = ?Ta5d6ff"
Te6edf3paramsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3moduleTb4b4b4)

Tff7b72if Te6edf3is_anomaly Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Te6edf3sql Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff AND is_anomaly = ?Ta5d6ff"
Te6edf3paramsTff7b72.Td2a8ffappendTb4b4b4(T79c0ff1 Tff7b72if Te6edf3is_anomaly Tff7b72else T79c0ff0Tb4b4b4)

Te6edf3sql Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff ORDER BY timestamp DESC LIMIT ? OFFSET ?Ta5d6ff"
Te6edf3paramsTff7b72.Td2a8ffextendTb4b4b4(Tb4b4b4[Te6edf3limitTb4b4b4, Te6edf3offsetTb4b4b4]Tb4b4b4)

Tff7b72return Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8fffetchallTb4b4b4(Te6edf3sqlTb4b4b4, Tffa657tupleTb4b4b4(Te6edf3paramsTb4b4b4)Tb4b4b4)

Tff7b72def Td2a8ffget_total_countTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3searchTff7b72=Tff7b72NoneTb4b4b4, Te6edf3levelTff7b72=Tff7b72NoneTb4b4b4, Te6edf3moduleTff7b72=Tff7b72NoneTb4b4b4, Te6edf3is_anomalyTff7b72=Tff7b72NoneTb4b4b4)Tb4b4b4:
Te6edf3sql Tff7b72= Ta5d6ff"Ta5d6ffSELECT COUNT(*) as count FROM debug_logs WHERE 1=1Ta5d6ff"
Te6edf3params Tff7b72= Tb4b4b4[Tb4b4b4]

Tff7b72if Te6edf3searchTb4b4b4:
Te6edf3sql Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff AND (message LIKE ? OR module LIKE ?)Ta5d6ff"
Te6edf3paramsTff7b72.Td2a8ffextendTb4b4b4(Tb4b4b4[Ta5d6fffTa5d6ff"Ta5d6ff%Tffd700{Te6edf3searchTffd700}Ta5d6ff%Ta5d6ff"Tb4b4b4, Ta5d6fffTa5d6ff"Ta5d6ff%Tffd700{Te6edf3searchTffd700}Ta5d6ff%Ta5d6ff"Tb4b4b4]Tb4b4b4)

Tff7b72if Te6edf3levelTb4b4b4:
Te6edf3sql Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff AND level = ?Ta5d6ff"
Te6edf3paramsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3levelTb4b4b4)

Tff7b72if Te6edf3moduleTb4b4b4:
Te6edf3sql Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff AND module = ?Ta5d6ff"
Te6edf3paramsTff7b72.Td2a8ffappendTb4b4b4(Te6edf3moduleTb4b4b4)

Tff7b72if Te6edf3is_anomaly Tff7b72is Tff7b72not Tff7b72NoneTb4b4b4:
Te6edf3sql Tff7b72+Tff7b72= Ta5d6ff"Ta5d6ff AND is_anomaly = ?Ta5d6ff"
Te6edf3paramsTff7b72.Td2a8ffappendTb4b4b4(T79c0ff1 Tff7b72if Te6edf3is_anomaly Tff7b72else T79c0ff0Tb4b4b4)

Te6edf3row Tff7b72= Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8fffetchoneTb4b4b4(Te6edf3sqlTb4b4b4, Tffa657tupleTb4b4b4(Te6edf3paramsTb4b4b4)Tb4b4b4)
Tff7b72return Te6edf3rowTb4b4b4[Ta5d6ff"Ta5d6ffcountTa5d6ff"Tb4b4b4] Tff7b72if Te6edf3row Tff7b72else T79c0ff0

Tff7b72def Td2a8ffcleanup_old_logsTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3max_logsTff7b72=T79c0ff10000Tb4b4b4)Tb4b4b4:
T8b949e"""Removes old logs keeping only the newest max_logs."""
Te6edf3count Tff7b72= Tff7b72selfTff7b72.Td2a8ffget_total_countTb4b4b4(Tb4b4b4)
Tff7b72if Te6edf3count Tff7b72> Te6edf3max_logsTb4b4b4:
T8b949e# Find the timestamp of the N-th newest log
Te6edf3sql Tff7b72= Ta5d6ff"Ta5d6ffSELECT timestamp FROM debug_logs ORDER BY timestamp DESC LIMIT 1 OFFSET ?Ta5d6ff"
Te6edf3row Tff7b72= Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8fffetchoneTb4b4b4(Te6edf3sqlTb4b4b4, Tb4b4b4(Te6edf3max_logs Tff7b72- T79c0ff1Tb4b4b4,Tb4b4b4)Tb4b4b4)
Tff7b72if Te6edf3rowTb4b4b4:
Te6edf3cutoff_ts Tff7b72= Te6edf3rowTb4b4b4[Ta5d6ff"Ta5d6fftimestampTa5d6ff"Tb4b4b4]
Tff7b72selfTff7b72.Td2a8ffproviderTff7b72.Td2a8ffexecuteTb4b4b4(
Ta5d6ff"Ta5d6ffDELETE FROM debug_logs WHERE timestamp < ?Ta5d6ff"Tb4b4b4,
Tb4b4b4(Te6edf3cutoff_tsTb4b4b4,Tb4b4b4)Tb4b4b4,
Tb4b4b4)

Tff7b72def Td2a8ffget_anomaliesTb4b4b4(Tff7b72selfTb4b4b4, Te6edf3limitTff7b72=T79c0ff50Tb4b4b4)Tb4b4b4:
Tff7b72return Tff7b72selfTff7b72.Td2a8ffget_logsTb4b4b4(Te6edf3limitTff7b72=Te6edf3limitTb4b4b4, Te6edf3is_anomalyTff7b72=Tff7b72TrueTb4b4b4)


──────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────────